package 内部类;

/*
 * 局部内部类在访问所在方法的局部变量时，这个局部变量必须是【有效fianl的】
 * 从java8开始，只要局部变量事实不变，那么fianl关键字可以省略不写
 * 原因：
 * 1、new的对象是在heap中存在的
 * 2、局部变量的生命周期取决于方法的运行与结束
 * 3、局部变量存在于stack当中，当方法运行结束之后，随之消失
 * 4、但是new的对象在被垃圾回收器回收之前，是一直存在于heap中的
 * 5、为了解决这个问题，就将局部变量复制了一份作为内部类的成员变量，这样当局部变量死亡后，内部类仍可以访问它，实际访问的是局部变量的"copy"。
 * */
public class 局部内部类访问局部变量 {
    public void method() {
        //从java8开始，只要局部变量事实不变，那么fianl关键字可以省略不写
        /*final*/
        int num = 10;
        // num=20;
        class Inner {
            public void methodInner() {
                System.out.println(num);
            }
        }


    }
}
